The range of alternative design choices that can be combined in different ways, for example synchronous vs asynchronous, domain specific vs generic. The design space may be represented in a matrix of different semi-independent choices, but also may be more complex.